package backend;

import java.util.List;
import java.util.Map;

/*
 * This interface describes the methods that an output for the
 * Pipe Dream Solver must have.
 */
public interface PipeDreamOutput {
	
	/*
	 * This method is called when a pipe is added to a solution
	 * at the position p and indicates the directions of the pipe.
	 */
	public void addPipe(Position p, List<InputTypes> directions);
	
	/*
	 * This method is called when a pipe is removed from a solution
	 * at the position p.
	 */
	public void removePipe(Position p);
	
	/*
	 * This method is called at the end of the algorithm with the 
	 * best solution.
	 */
	public void printSolution(Map<Position,Pipe> pipes);
}
